import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 示例数据
regions = ["华南", "华北", "东北", "西北", "华东"]
data_2022 = np.array([2238, 1531, 1426, 1321, 1215])
data_2021 = np.array([2066, 1436, 1531, 1265, 1003])

# 设置条形位置
y = np.arange(len(regions))

# 创建图形和轴
fig, ax = plt.subplots(figsize=(12, 6), facecolor='#1A1E43')

# 调整子图位置，整体向下移动
fig.subplots_adjust(top=0.8)  # 将顶部边距设置为0.85，可以根据需要调整这个值

# 绘制条形图
bar_width = 0.4  # 条形宽度
ax.barh(y, data_2022, height=bar_width, color='#0070C0', label='2022', align='center')  # 2022年数据向右
ax.barh(y, -data_2021, height=bar_width, color='#E74E69', label='2021', align='center')  # 2021年数据向左，但为负号以表示

# 设置刻度和区间
ax.set_facecolor('#1A1E43')  # 设置背景颜色
ax.spines['left'].set_color('none')
ax.spines['bottom'].set_color('none')
ax.tick_params(axis='x', colors='none')  # 隐藏X轴刻度
ax.tick_params(axis='y', colors='none')  # 隐藏Y轴刻度

# 隐藏坐标轴
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['bottom'].set_color('none')

# 添加注释
for i in range(len(regions)):
    ax.text(data_2022[i] - 150, i, str(data_2022[i]), color='white', va='center')
    ax.text(-data_2021[i], i, str(data_2021[i]), color='white', va='center')

# 放置2022和2021的标签
for i in range(len(regions)):
    ax.text(0, i, regions[i], color='white', ha='center', va='center')
# 添加子标题
plt.text(0.3, 1.2, '2022年上半年各区域对比去年销量', ha='center', va='center',
         transform=plt.gca().transAxes, fontsize=30, color='white')
# 添加子标题
plt.text(0.36, 1.1, '2022年整体销量高于2021年，只有东北区域较2021有所下降', ha='center', va='center',
         transform=plt.gca().transAxes, fontsize=20, color='white')

# 添加标签
ax.text(0.25, 1.02, ' 2022', color='#0070C0', ha='center', va='center', fontsize=15, transform=plt.gca().transAxes)
ax.text(0.75, 1.02, '2021 ', color='#E74E69', ha='center', va='center', fontsize=15, transform=plt.gca().transAxes)

# 显示图形
plt.show()
